package controlImpl;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;

import comparators.CompareProdutoByDateFab;

import constants.Constants;
import control.ControlVendas;
import dao.ProdutoDao;
import daoImpl.ProdutoDaoImpl;
import entities.Produto;

public class ControlVendasImpl implements ControlVendas{

	private static Logger log = Logger.getLogger(ControlVendasImpl.class);

	private static ControlImpl controlImpl = null;
	private static ControlVendas controlVendasImpl = null;
	private ProdutoDao produtoDaoImpl = null;
	private ArrayList<Produto> produtos = null;

	public ControlVendasImpl(){
		produtos = new ArrayList<Produto>();
		produtoDaoImpl = ProdutoDaoImpl.getInstance();
		controlImpl = ControlImpl.getInstance();
	}
	
	public static ControlVendas getInstance(){
		if(controlVendasImpl == null){
			controlVendasImpl = new ControlVendasImpl();
		}

		return controlVendasImpl;
	}
	
	public void recuperaAllProdutosDisp() throws HibernateException {
		produtos.clear();
		produtos = (ArrayList<Produto>) produtoDaoImpl.getAllProdutosDisponiveis();
		Collections.sort(produtos, new CompareProdutoByDateFab());
	}
	
	public void preencheTextFildQntDisponivel(String produto){
		log.info("Inicio do metodo ControlVendasImpl.getQntProdutoByName." + Constants.NEW_LINE);
		log.info("Recuperando a quantidade de produtos para o nome: " + produto + Constants.NEW_LINE);
		
		Integer qnt = 0;
		
		for(Produto p: produtos){
			if(p.getNome().equals(produto) && !p.isVendido()){
				qnt++;
			}
		}
		
		controlImpl.getFramePrincipal().getTextFieldQntDispCadVendas().setText(qnt.toString());				
	}
	
	public void adicionaProdutoTabela(String nome, Integer qntSolicitada){
		
		
		
	}
	
	
	
	

}
